
/** 
* 数据验证框架.增加了对id字段检查出错时,直接在对应后面添加一< span>元素来显示错误信息. 
*/ 
var checkData = new function() { 
	var idExt="_checkRes_Span";//生成span层的id后缀 
 
	/** 
	* 得到中英文字符长(中文为2个字符) 
	*/ 
	this.length = function(str) { 
		var p1 = new RegExp('%u..', 'g') 
		var p2 = new RegExp('%.', 'g') 
		return escape(str).replace(p1, '').replace(p2, '').length 
	} 

	/** 
	* 删除对应id元素 
	*/ 
	this.remove = function(id) { 
		var idObject = document.getElementById(id); 
		if (idObject != null) 
		idObject.parentNode.removeChild(idObject); 
	} 
	
	/** 
	* 在对应id后面错误信息 
	* 
	* @param id:需要显示错误信息的id元素 
	* str:显示错误信息 
	*/ 
	this.appendError = function(id, str) { 
		this.remove(id + idExt);// 如果span元素存在，则先删除此元素 
		var spanNew = document.createElement("span");// 创建span 
		spanNew.id = id + idExt;// 生成spanid 
		spanNew.style.color = "red"; 
		spanNew.appendChild(document.createTextNode(str));// 给span添加内容 
		var inputId = document.getElementById(id); 
		inputId.parentNode.insertBefore(spanNew, inputId.nextSibling);// 给需要添加元素后面添加span 
	} 
	
	/** 
	* @description 过滤所有空格字符。 
	* @param str:需要去掉空间的原始字符串 
	* @return 返回已经去掉空格的字符串 
	*/ 
	this.trimSpace = function(str) { 
		str += ""; 
		while ((str.charAt(0) == ' ') || (str.charAt(0) == '???') 
		|| (escape(str.charAt(0)) == '%u3000')) 
		str = str.substring(1, str.length); 
		while ((str.charAt(str.length - 1) == ' ') 
		|| (str.charAt(str.length - 1) == '???') 
		|| (escape(str.charAt(str.length - 1)) == '%u3000')) 
		str = str.substring(0, str.length - 1); 
		return str; 
	} 
	
	/** 
	* 过滤字符串开始部分的空格\字符串结束部分的空格\将文字中间多个相连的空格变为一个空格 
	* 
	* @param {Object} 
	* inputString 
	*/ 
	this.trim = function(inputString) { 
		if (typeof inputString != "string") { 
		return inputString; 
	} 
	
	var retValue = inputString; 
	var ch = retValue.substring(0, 1); 
	while (ch == " ") { 
		// 检查字符串开始部分的空格 
		retValue = retValue.substring(1, retValue.length); 
		ch = retValue.substring(0, 1); 
	} 
	ch = retValue.substring(retValue.length - 1, retValue.length); 
	while (ch == " ") { 
		// 检查字符串结束部分的空格 
		retValue = retValue.substring(0, retValue.length - 1); 
		ch = retValue.substring(retValue.length - 1, retValue.length); 
	} 
	while (retValue.indexOf(" ") != -1) { 
		// 将文字中间多个相连的空格变为一个空格 
		retValue = retValue.substring(0, retValue.indexOf(" ")) 
		+ retValue.substring(retValue.indexOf(" ") + 1, 
		retValue.length); 
	} 
	return retValue; 
	} 
	/** 
	* 过滤字符串,指定过滤内容，如果内容为空，则默认过滤 '~!@#$%^&*()-+." 
	* 
	* @param {Object} 
	* str 
	* @param {Object} 
	* filterStr 
	* 
	* @return 包含过滤内容，返回True,否则返回false; 
	*/ 
	this.filterStr = function(str, filterString) { 
		filterString = filterString == "" ? "'~!@#$%^&*()-+.\"" : filterString 
		var ch; 
		var i; 
		var temp; 
		var error = false;// 当包含非法字符时，返回True 
		for (i = 0; i <= (filterString.length - 1); i++) { 
			ch = filterString.charAt(i); 
			temp = str.indexOf(ch); 
			if (temp != -1) { 
				error = true; 
				break; 
			} 
		} 
		return error; 
	} 
	this.filterStrSpan = function(id, filterString) { 
		filterString = filterString == "" ? "'~!@#$%^&*()-+.\"" : filterString 
		var val = document.getElementById(id); 
		if (this.filterStr(val.value, filterString)) { 
			val.select(); 
			var str = "不能包含非法字符" + filterString; 
			this.appendError(id, str); 
			return false; 
		} else { 
			this.remove(id + idExt); 
			return true; 
		} 
	} 
	
	/** 
	* 检查是否为电子邮件 
	* 
	* @param {} 
	* str 
	* @return {Boolean} true：电子邮件，false:<b>不是</b>电子邮件; 
	*/ 
	this.isEmail = function(str) { 
		var re = /^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; 
		return re.test(str); 
	} 
	this.isEmailSpan = function(id) { 
		var val = document.getElementById(id); 
		if (!this.isEmail(val.value)) { 
			val.select(); 
			var str = "邮箱不符合格式;"; 
			this.appendError(id, str); 
			return false; 
		} else { 
			this.remove(id + idExt); 
			return true; 
		} 
	} 
	/** 
	* 检查是否为数字 
	* 
	* @param {} 
	* str 
	* @return {Boolean} true：数字，false:<b>不是</b>数字; 
	*/ 
	this.isNum = function(str) { 
		var re = /^[\d]+$/ 
		return re.test(str); 
	} 
	this.isNumSpan = function(id) { 
		var val = document.getElementById(id); 
		if (!this.isNum(val.value)) { 
			val.select(); 
			var str = "必须是数字;"; 
			this.appendError(id, str); 
			return false; 
		} else { 
			this.remove(id + idExt); 
			return true; 
		} 
	} 

	/** 
	* 检查字符不为空 
	* 
	* @param {} 
	* str 
	* @return {Boolean} <b>字符为空</b>返回true,否则为false; 
	*/ 
	this.isEmpty = function(str) { 
		return str == ""; 
	} 
	this.isEmptySpan = function(id) { 
		var val = document.getElementById(id); 
		if (this.isEmpty(val.value)) { 
			var str = "不允许为空;"; 
			val.select(); 
			this.appendError(id, str); 
			return false; 
		} else { 
			this.remove(id + idExt); 
			return true; 
		} 
	} 
} 